export default {
  // 订阅消息的统一检测方法
  subcriptionAuthorizeCheck: (tmplIds) => {
    // 多个模板ID
    // let tmplIds = app.globalData.tmplIds
    wx.getSetting({
      withSubscriptions: true,
      success(res) {
        // 1. 检查订阅全局开关是否开启
        let settingsSwitch = res.subscriptionsSetting.mainSwitch
        // 2. 没有开启全局订阅,提示用户开启订阅
        if (!settingsSwitch) {
          // todo 提示窗口
          wx.showModal({
            content: '请开启消息订阅\n小程序设置-消息订阅-接受订阅消息-勾选所有订阅消息',
            showCancel: false,
            confirmText: '我知道了',
            success: function (res) {
              wx.openSetting({})
            }
          })
          return;
        }
        // 3. 如果订阅消息是reject,提醒用户开启订阅消息 小程序设置->消息订阅->接受订阅消息->勾选所有订阅消息
        let itemSettings = res.subscriptionsSetting.itemSettings;
        // 用于存储,没有订阅的消息模板ID
        let unsubscribedTmplIds = [];
        // 表示用户没有勾选永久订阅消息, 此时需要用户订阅所有消息
        if (itemSettings == undefined) {
          unsubscribedTmplIds = tmplIds;
          // 表示用户勾选了部分消息的永久订阅,则需要对没有勾选的消息进行发起订阅提示
        } else {
          tmplIds.forEach(element => {
            // 用户没有永久订阅消息
            if (itemSettings[element] != 'accept') {
              // 提醒开启订阅 [小程序设置->消息订阅->接受订阅消息->勾选所有订阅消息]
              unsubscribedTmplIds.push(element)
            }
          });
        }
        // 表示存在未永久订阅的消息
        if (unsubscribedTmplIds.length > 0) {
          //调取订阅消息
          wx.showModal({
            title: '温馨提示',
            content: '是否允许您的好友向您推送消息',
            showCancel: true,
            cancelText: '不同意',
            confirmText: '同意',
            success(res) {
              wx.requestSubscribeMessage({
                tmplIds: unsubscribedTmplIds,
              })
            },
            fail(err) {
              wx.showToast({
                title: '已拒绝推送消息',
              })
            }
          })
        }
      }
    })
  }
}